package cn.huangsm.advance.designmode.singlemode;

/**
 * 单例模式---懒汉式
 *
 * @author huang
 * @PACKAGE_NAME cn.huangsm.advance.designmode.singlemode
 * @PROJECT_NAME advance-code
 * @date 2019/1/24
 */
public class LazyType {

    /**
     *  问题
     * 优点：延迟加载（需要的时候才去加载）,适合单线程操作
     * 缺点： 线程不安全，在多线程中很容易出现不同步的情况，如在数据库对象进行的频繁读写操作时。
     */


    /**
     * 私有化构造方法
     */
    private LazyType() {
    }
    /**
     * 持有私有静态实例，防止被引用，此处赋值为null，目的是实现延迟加载
     */
    private static LazyType lazyType = null;

    /**
     * 对外提供一个获取对象的方法
     */
    public static LazyType getLazyType() {
        if (lazyType == null) {
            return new LazyType();
        }
        return lazyType;
    }

    public static void main(String[] args) {

        System.out.println(LazyType.getLazyType());
        System.out.println(LazyType.getLazyType());
        System.out.println(LazyType.getLazyType());
    }
}
